JavaInspect - usage from commandline
Table of Contents
1. Available commandline arguments
- -j (existing files)…
- JAR file(s) to render.
- -c (existing directories)…
- Classpath directories
- -n (string)
- Graph name. (default: "graph")
- –debug
- Show debug info.
- -h, –help
- Show commandline usage help.
- -k
- Keep dot file.
- -ho
- Hide orphaned classes.
- -w (one to many strings)…
- Whitelist glob(s).
- -b (one to many strings)…
- Blacklist glob(s).
- -r (one to many strings)…
- root class(es).
- -d (existing directory)
- Target directory. Default is current directory.
- -t (options: png, svg)
- Target image type. Default is: svg.
2. Specifying classes to render
Normal Java application has immense complexity. In addition to code that was directly written by particular project developers, lots of functionality is typically added as frameworks or libraries to the project. In addition there is significant Java standard library.
Because JavaInspect uses reflection, it does not easily distinguish between those. In normal situation you would rather want to visualize only code that was developed specifically for your project and leave frameworks like Spring etc. out. If you visualize all classes that are possibly reachable from you project, you will easily get huge and incomprehensible graph.
JavaInspect can digest compiled Java classes in 2 modes:
- Provide list of Jar files. Use -j option.
- Provide list of filesystem directories that can be used as classpath root. Use -c option.
Currently JavaInspect uses following algorithm to add classes to rendered graph:
- All classes that were found in Jar files are added to graph by default.
- None of the classes that were found in filesystem directories are added to the graph by default (unless explicitly referenced). (TODO: for consistency it would be better to add them too by default)
- If whitelist is specified (-w option) everything that is not matched by whitelist pattern(s) will be removed from the graph.
- If blacklist is specified (-b option) everything that is matched by blacklist pattern(s) will be removed from the graph.
- Root classes can be specified using -r option. Root classes will be added to the graph. JavaInspect will then try to recursively discover all classes that were referenced by root class and add those also to the graph.
3. Examples
Visualize java Jar file. All classes. Hide orphaned classes:
javainspect \ -j target/sixth-3d-*-SNAPSHOT.jar \ -d doc/graphs/ \ -n "all classes" \ -t png -ho
Visualize java Jar file. All classes. Hide orphaned classes. Apply whitelist:
javainspect \ -j target/sixth-3d-*-SNAPSHOT.jar \ -d doc/graphs/ \ -n "GUI" \ -t png \ -w "eu.svjatoslav.sixth.e3d.gui.*" \ -ho